Current network interface controller (NIC) implementations either deliver all packets to one place, for software to decode, or have wired-in restricted hardware routing for perhaps four different sequences of headers: {Link, IPv4, TCP}; {Link, IPv4, UDP}; {Link, IPv6, TCP}; {Link, IPv6, UDP}. All other packets are routed to one place for software (or NIC firmware) to decode. None of the software-based results can be routed at anything near line rate, and typically slowed by a factor of 10. A user of such chips cannot have a much-different distribution of packets, such as 100% IPv6/UDP, without overflowing one small dedicated routing table and under-utilizing all the others. An overflowed table means packets for all connections whose routing doesn't fit go to software and suffer a significant slowdown.
Today's NIC implementations that provide for RSS in hardware have wired-in restricted choices for which bytes of a packet to use to create an RSS hash. Any packet format that deviates from the wired-in bits does not get any hardware RSS support, so all such packets must be routed to hypervisor software to select the eventual destination. Encapsulated packets, for example, are not amenable to the standard selection of bits for an RSS hash. Packets routed to the hypervisor for destination selection are slowed.